package LimitedTimeGame.Day_0216;

/**
 * @author zxc
 * @date 2023/02/16 10:22
 **/

import java.util.Stack;

/**
 * 题目 ：从头到尾打印链表
 * 题目详述 ：
 * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
 *
 * 限制：
 * 0 <= 链表长度 <= 10000
 *
 */
public class ReversePrint02 {
    /**
     * 思路 ：
     * ===》
     * 暴力法 ：
     * （1）遍历整条链表，获取到当前链表长度len;
     * （2）创建大小为len的结果数组result，用来存储翻转之后链表的节点值;
     * （3）遍历链表，将链表值从尾到头地存储所有链表节点值;
     *
     * @param head
     * @return
     */
    public int[] reversePrint(ListNode head) {
        ListNode node = head;
        int len = 0;
        while (node != null){
            len++;
            node = node.next;
        }
        int[] result = new int[len];
        while(head != null){
            result[len - 1] = head.val;
            len--;
            head = head.next;
        }
        return result;
    }
    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }
}
